技术经验 • dingxiao • 阅读数:3279 • 2020年9月17日 19:24
从上图中可以看出NVS空间大小为20KB,对于一般的应用这个容量已经完全足够支撑了,故在JS项目中将舍弃原有的E2PROM,改用NVS。
NVS操作参考网址为:
1)https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/storage/nvs_flash.html ----官方IDF支持库
2)http://okiraku-camera.tokyo/blog/?p=6023
3)https://github.com/TridentTD/TridentTD_ESP32NVS ---最终使用的NVS库
结合TridentTD_ESP32NVS库对NVS功能进行了操作,操作代码为:
#include "TridentTD_ESP32NVS.h"
void setup() {
Serial.begin(115200); Serial.println();
Serial.println("[ESP32] NVS start");
NVS.begin();
// Serial.println("[NVS] set object to NVS");
// uint8_t mac[6] = {0xDF, 0xEE, 0x10, 0x49, 0xA1, 0x42};
// NVS.setObject( "MAC", &mac, sizeof(mac) );
// Serial.println("[NVS] get object from NVS");
// uint8_t* mymac;
// mymac = (uint8_t*) NVS.getObject( "MAC");
//
// Serial.printf("mac : %02X:%02X:%02X:%02X:%02X:%02X\n",
// mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]);
// String ssid = "wuyiyi";
// String password = "3339061";
// NVS.setString("SSID", ssid);
// NVS.setString("PASSWORD", password);
String ssid_t = NVS.getString("SSID");
String password_t = NVS.getString("PASSWORD");
Serial.printf("ssid : %s\n", ssid_t.c_str());
Serial.printf("password : %s\n", password_t.c_str());
// NVS.eraseAll();
}
有了NVS库的支持,对于项目中需要进行少量的数据存储及参数配置,NVS将十分方便。
配合wifi的smartconfig功能可快速实现wifi重要参数的配置及存储功能。